Skip to content

fix: define decoded AGC state and bound size arithmetic - #10249

Open
zoelmoj wants to merge 1 commit into
boykopovar:mainfrom
zoelmoj:fix/agc-state-init-and-bounds
Open

zoelmoj wants to merge 1 commit into
boykopovar:mainfrom
zoelmoj:fix/agc-state-init-and-bounds

Conversation

@zoelmoj

@zoelmoj zoelmoj commented Oct 23, 2026 •

Copy link
Copy Markdown

What

Fixes undefined-behaviour and correctness defects in the AGC driver, guest libc, NGS2, IME, VideoOut, the shader recompiler and the relinker:

  • Graphics::State, ShaderStages, ColorTarget and DepthTarget had members without initializers (scissor, cullMode, frontFace, blend, blendConstants, viewport, renderExtent, topology, hasColorTarget, negativeOneToOne, path, registerValue, the wave sizes, address, extent, format, bytes, componentMapping, clearDepth, clearStencil). Driver::sameDecode compares blendConstants and the sample masks, so a default-constructed State read indeterminate memory.
  • Ngs2CustomModuleOption is a 4-byte size field; OptionWord read 4 bytes at offset 4, past the declared object. It now validates the guest-declared option size and returns the option error code when the option is truncated.
  • Recorder indexed syncWaitedMs[source] (5 entries) and, inside CountThreadSync, counts[source] and waitedMs[source], before any range check.
  • ThreadOwned lost the object when push_back threw while registering it.
  • sceLibcMspaceCreate returned success when the map insertion failed.
  • Size arithmetic was performed in 32 bits and widened afterwards in MultisampledDepthBytes, StorageTexture::sliceWindows, the vertex input table read, VideoOutDriver::processFlip and the Mach-O init stub displacement.
  • Sequence::SubmitCompute copied the compute shader register and specials pointers with sizeof applied to pointer variables, which reads as a mistake. The copy now goes through std::uintptr_t, so the width is the pointer size by construction.
  • fprintf received Registers::Reference proxies (Pm4 context trace) and uncast register values (draw capture dump).
  • StencilReferenceUnused compared VkCompareOp against VK_COMPARE_OP_NEVER, which is 0 and therefore unreachable.
  • FilterText computed type - 0x100 on std::uint32_t before checking type >= 0x100.
  • ~Replay called its virtual Cancel/Wait unqualified, the tessellation attribute switch left InstanceInput/InstanceOutput implicit, and AdjustedDelta carried an unused cutStart parameter.

Tested

  • OS: NixOS 26.05, x86-64, GCC 15.3, Release.
  • cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release ..., cmake --build build --parallel 12 and cmake --build build --target libs --parallel 12 all succeed on top of current main; the patched .prx set is produced.
  • ctest -R '^(mspace|agc_driver_pm4|agc_driver_draw_program_trace|guest_ime_filter_text|ngs2_core_render)$': 5/5 pass.
  • clang-tidy -p build -checks='-*,bugprone-sizeof-expression' core/libs/prx/libSceJobManager/Export.cpp: reported Export.cpp:349 before the change, nothing after it.
  • GPU tests were not run: the build environment has no Vulkan device, so the AGC and VideoOut tests with ANYPS5_REQUIRE_VULKAN=1, ANYPS5_NO_SHADER_CACHE=1 and the validation layer still need a run on hardware.
  • python3 tools/check_conventions.py --base origin/main passes.
  • python3 tools/pr_overlap.py --branch fix/agc-state-init-and-bounds reports file-level overlap with open PRs that implement unrelated features and fixes. The two hunks that duplicated open work were dropped: the DepthSurface tile-mode format is fix(agc): pass the tile mode of a mismatched depth plane copy as an int #7504, and the Sequence::Advance erase line is replaced by fix(job-manager): keep scheduling state in caller memory #10231/fix(job-manager): forward native profiler lifecycle events #10244.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a (GPU tests not run; no Vulkan device in the build environment)
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 862 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1368 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 1395 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 4448 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5021 core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp
PR 5609 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 5925 core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
PR 6146 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 6186 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 6187 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6188 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6192 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6197 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6209 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6235 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 6280 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6481 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 6549 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 6804 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 6808 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 6987 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 6989 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 6995 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7002 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7085 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7256 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 7410 core/libs/prx/libSceAgcDriver/Graphics/src/ShaderInputState.cpp
PR 7449 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7464 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 7504 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 7514 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7604 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7622 core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp
PR 7642 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 7668 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 8212 core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
PR 8246 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8484 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 8707 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9020 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 9289 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 9335 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 9356 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 9387 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 9508 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9712 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 9748 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 9875 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 9884 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 9893 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 9895 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 9950 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 9999 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10064 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10193 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10359 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
PR 10397 core/libs/prx/libc/src/Mspace.cpp
PR 10442 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 10469 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 10492 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 10497 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 10656 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10743 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 10861 core/relinker/elfpatcher/src/macos/MacOsImage.cpp
PR 11444 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11485 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 11551 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 11587 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 11825 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 12070 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12107 core/libs/prx/libSceNgs2.native/src/Custom.cpp
PR 12567 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 12568 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 12745 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12746 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12792 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 12840 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 12863 core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp
PR 12944 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 13023 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 13251 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13793 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 13796 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13809 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 13863 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13920 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13928 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13929 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 13991 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 14084 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 14344 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 14418 core/relinker/elfpatcher/src/macos/MacOsImage.cpp
PR 14561 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 14628 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 14794 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
PR 14969 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15015 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15032 core/relinker/elfpatcher/src/macos/MacOsImage.cpp
PR 15058 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15059 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 15136 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15404 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15423 core/libs/prx/libSceAgcDriver/Graphics/src/PipelineJournal.cpp
PR 15424 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15438 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15443 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15446 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15529 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15548 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 15569 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15570 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 15572 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 15610 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 15621 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15670 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 15674 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15680 core/shader/recompiler/Optimization/src/TessellationLowering.cpp
PR 15688 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15690 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15693 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 15707 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15710 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15729 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15750 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15792 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 15797 core/libs/prx/libSceJobManager/Export.cpp
PR 15798 core/libs/prx/libSceJobManager/Export.cpp
PR 15799 core/libs/prx/libSceJobManager/Export.cpp
PR 15800 core/libs/prx/libSceJobManager/Export.cpp
PR 15801 core/libs/prx/libSceJobManager/Export.cpp
PR 15802 core/libs/prx/libSceJobManager/Export.cpp
PR 15803 core/libs/prx/libSceJobManager/Export.cpp
PR 15804 core/libs/prx/libSceJobManager/Export.cpp
PR 15806 core/libs/prx/libSceJobManager/Export.cpp
PR 15807 core/libs/prx/libSceJobManager/Export.cpp
PR 15941 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 15946 core/libs/prx/libSceNgs2.native/src/Custom.cpp
PR 15967 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 15973 core/libs/prx/libSceVideoOut/src/VideoOutDriver.cpp
PR 15986 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16011 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16022 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 16025 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 16053 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 16054 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 16058 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 16059 core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 16086 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16115 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 16116 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16168 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16183 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16184 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 16253 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16259 core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 16286 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16294 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16301 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16345 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp
PR 16346 core/libs/prx/libSceJobManager/Export.cpp
PR 16363 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16364 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16365 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16368 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16373 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16375 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 16387 core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
PR 16411 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16413 core/libs/prx/libSceAgcDriver/Execution/src/Driver/Draw/DrawCapture.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
PR 16420 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
core/libs/prx/libSceAgcDriver/Graphics/src/Recorder.cpp
PR 16427 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16483 core/libs/prx/libSceAgcDriver/Graphics/src/Texture.cpp
PR 16501 core/libs/prx/libSceAgcDriver/Graphics/src/DepthSurface.cpp
PR 16544 core/libs/prx/libSceAgcDriver/Execution/src/Pm4.cpp

Initialize every member of the AGC decoded state (shader stages, color and
depth targets, viewport, scissor, blend state and blend constants) so the
draw key compares defined values instead of indeterminate memory.

Bound the NGS2 custom module option word read to the option size the guest
declares, clamp the recorder sync source before indexing its per-source
counters, and destroy a thread-owned object when registering it throws.

Widen the operands of the depth, texture, vertex input, VideoOut and
Mach-O size expressions before multiplying, cast the register proxies
passed to fprintf, and drop the comparison bounds that can never hold in
the stencil reference check.

Load the compute shader register and specials pointers through uintptr_t
so the copied width is the pointer size rather than a sizeof on a pointer.

Report an mspace insert failure instead of returning success, qualify the
replay destructor's virtual calls, cover the remaining tessellation
attribute kinds, and drop the unused cutStart parameter from the
instruction rewriter.
@zoelmoj
zoelmoj force-pushed the fix/agc-state-init-and-bounds branch from 6fae5f4 to a4d01ff Compare October 23, 2026 16:04
@zoelmoj

zoelmoj commented Oct 23, 2026

Copy link
Copy Markdown
Author

Resolved the overlap report from the bot:

@oneandonlydean

Copy link
Copy Markdown
Collaborator

@zoelmoj Could you add regressions that distinguish these fixes from main for default-decoded AGC state, out-of-range recorder source indexes, widened boundary arithmetic, mspace duplicate/failure results, and ThreadOwned registration-allocation failure cleanup? Please split unrelated NGS2/IME/relinker cleanups or explain their common scope. Existing passing tests and disappearing diagnostics do not establish the before/after behaviour of these changes.

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 24, 2026
@oneandonlydean

Copy link
Copy Markdown
Collaborator

@zoelmoj Since #9348 merged, this branch conflicts with main in State.hpp. When you address the open review points, please also merge current main. We'll run full CI on the resulting head.

@cocoa55

cocoa55 commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

@zoelmoj Heads-up: #9454 uses cutStart in AdjustedDelta to reject branches whose target lands inside the rewritten instruction (the warning was flagging a missing check, not a dead parameter). Could you drop the cutStart removal from this PR? Removing it would conflict with #9454.

@JJenkx

JJenkx commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

A note for the merge order, from #12085 (JobManager workers spin on an epoch counter instead of the manager lock). A reviewer flagged that PR and this one as conflicting in libSceJobManager/Export.cpp. I checked: the only conflicting hunk is this PR's Sequence::SubmitCompute change, and it conflicts with main itself, not with #12085's worker-loop edit. main changed item.shader to item.gpu.shader after this branch's base 4997726a5f. Merging current main here should clear it for both, and the two PRs then edit separate parts of the file.

AI-assisted: yes (Claude Code).

@oneandonlydean

Copy link
Copy Markdown
Collaborator

Thank you for your work on this. Main has moved, and the PR now conflicts in:

  • core/libs/prx/libSceAgcDriver/Graphics/include/State.hpp
  • core/libs/prx/libSceJobManager/Export.cpp
  • core/libs/prx/libSceNgs2.native/src/Custom.cpp

Could you merge current main into your branch or rebase onto it, keeping the existing review fixes? The points from our earlier review are also still open.

Thank you!

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agc libSceAgc* libc needs rebase Conflicts with main, rebase needed prx relinker shader core/shader stale Conflicting with main and no activity for 7 days

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants